package basicGramer

import (
	"fmt"
)

/**
  断言使用
*/

func I() {

}

func init() {
	fmt.Println("\n\n============这里是TypeGramer的init()函数应用")
	switchDemo()
}

func switchDemo() {
	findType(10)
	findType("张三")
	var i interface{}
	findType(i)
}

// 用空接口 可以接受任何类型的数值  等同于Java的泛型
func findType(obj interface{}) {
	switch x := obj.(type) {
	case string:
		fmt.Println(x, "is string类型")
	case int:
		fmt.Println(x, " is int类型")
	case nil:
		fmt.Println(x, " is nil对象")
	default:
		fmt.Println(x, "无法分别出具体的数据类型")
	}
}

func typeD() {
	fmt.Printf("这是包basicGrammer/断言type下的init()函数方法")

	var i interface{} = 10
	t1, ok := i.(int)
	fmt.Printf("%d-%t\n", t1, ok)

	fmt.Println("=====分隔线1=====")

	t2, ok := i.(string)
	fmt.Printf("%s-%t\n", t2, ok)

	fmt.Println("=====分隔线2=====")

	var k interface{} // nil
	t3, ok := k.(interface{})
	fmt.Println(t3, "-", ok)

	fmt.Println("=======分割线3======")

	k = 10
	t4, ok := k.(interface{})
	fmt.Printf("%d-%t\n", t4, ok)

	t5, ok := k.(int)
	fmt.Printf("%d-%t\n", t5, ok)
}
